package lz.controls.managers
{
	/**
	 * IFocusManagerComponent 接口提供方法和属性，使得组件具有获得焦点的功能。 
	 * 组件必须实现此接口才能从 FocusManager 获得焦点。
	 * UIComponent 类提供此接口的基实现，但不是完全实现，因为并非所有 UIComponent 对象都获得焦点。 
	 * 从 UIComponent 类派生的组件必须实现此接口才能获得焦点。 
	 * 若要启用焦点，请将 implements IFocusManagerComponent 语句添加到由 UIComponent 类派生的组件的类定义中。
	 */
	public interface IFocusManagerComponent
	{
		/**
		 * 获取或设置一个布尔值，该值指示选择的组件是否能从焦点管理器获得焦点。
		 * 要使组件能够从焦点管理器获得焦点，请将此属性设置为 true。要使组件不能获得焦点，请将此属性设置为 false。
		 * 当 focusEnabled 设置为 false 时，焦点管理器将在组件生存期内忽略组件，并且不对组件在属性 tabEnabled、tabChildren 和 mouseFocusEnabled 中的变化进行监视。
		 * 可以使用 focusEnabled 属性使某个组件用于实现 IFocusManagerComponent 接口的子组件不能从焦点管理器获得焦点。
		 * 为此，请将此属性设为 false，然后再使用 addChild() 方法将子组件添加到显示列表。 
		 * 请注意，如果您在将组件添加到显示列表之前将此属性设为 false，则即使您稍后将此属性设为 true，焦点管理器仍会继续忽略该组件。
		 * 注意：即使将此属性设置为 false，还是可以使用 setFocus() 方法以编程方式设置焦点。
		 */
		function get focusEnabled():Boolean;
		function set focusEnabled(value:Boolean):void;
		/**
		 * 获取一个布尔值，该值指示使用鼠标设备选择的组件是否可以获得焦点。
		 * 将此属性设置为 true，可以为使用鼠标设备选择的组件提供焦点。 
		 * 将此属性设置为 false，可以防止将焦点指定给使用鼠标设备选择的组件。
		 * 使用鼠标设备选择组件时，如果将此属性设置为 false，焦点将被转移给此属性设置为 true 的第一个父组件。
		 */
		function get mouseFocusEnabled():Boolean;
		/**
		 * 获取一个布尔值，该值指示按下 Tab 键是否可以将焦点移动到此组件。 
		 * true 值指示按 Tab 键可以使焦点移动到此组件；false 值指示不能使用 Tab 键提供此组件的焦点。
		 * 即使该值设置为 false，当使用鼠标设备或通过调用 setFocus() 方法来选择该组件时，该组件也仍可以获得焦点。
		 */
		function get tabEnabled():Boolean;
		/**
		 * 获取组件获得焦点的顺序（如果 tabEnabled 设置为 true）。
		 * 默认情况下，tabIndex 属性为 -1，这表明没有为该对象设置 Tab 索引，该对象将根据 z 顺序获得焦点。
		 * tabIndex 属性还可以是非负整数。 
		 * 在这种情况下，对象将按照其 tabIndex 属性的升序进行排序。 
		 * tabIndex 值为 1 的对象在 tabIndex 值为 2 的对象的前面。
		 * 如果两个对象具有相同的 tabIndex 值，则在默认 Tab 键顺序中位置靠前的对象将优先于另一个对象。
		 * 默认值为 -1。
		 */
		function get tabIndex():int;
		/**
		 * 为组件设置焦点。
		 * 此方法在组件获得焦点时由焦点管理器调用。 同样，该组件可以将焦点设置给某个内部组件。
		 */
		function setFocus():void;
		/**
		 * 绘制可视焦点指示符。
		 * 此方法在组件获得焦点时由焦点管理器调用。 组件应该绘制或隐藏表示组件具有焦点的图形。
		 * 参数
		 * draw:Boolean — 如果为 true，则绘制焦点指示符，否则隐藏它。
		 */
		function drawFocus(draw:Boolean):void;
	}
}

